// package com.example.freemaker_demo.executer;
//
// import cn.hutool.core.date.DateUtil;
// import cn.hutool.core.io.IoUtil;
// import cn.hutool.core.util.StrUtil;
// import com.example.freemaker_demo.config.SpringContextHolder;
// import com.example.freemaker_demo.constant.ConstantUtil;
// import com.example.freemaker_demo.entity.JavaTplEntity;
// import com.example.freemaker_demo.entity.TemplateEntity;
// import com.example.freemaker_demo.entity.VueTplEntity;
// import freemarker.template.Configuration;
// import freemarker.template.Template;
// import freemarker.template.TemplateException;
// import lombok.extern.slf4j.Slf4j;
// import org.springframework.beans.factory.annotation.Value;
// import org.springframework.stereotype.Component;
//
// import java.io.*;
// import java.util.Date;
// import java.util.HashMap;
// import java.util.Map;
//
//
// @Component
// @Slf4j
// public class FreemakerExecuter {
//
//     private static TemplateEntity  template;
//
//     private static Configuration cfg;
//
//     private static String templateOutputPath;
//
//     @Value("${templateOutputPath}")
//     private void setOutputPath(String templateOutputPath) {
//         if (templateOutputPath.charAt(templateOutputPath.length() - 1) != '/') {
//             templateOutputPath += "/";
//         }
//         templateOutputPath += (DateUtil.format(new Date(), "yyyy-MM-dd_HH-mm-ss") + "/");
//         FreemakerExecuter.templateOutputPath = templateOutputPath;
//     }
//
//     public static void executeAll(TemplateEntity templateEntity) {
//         FreemakerExecuter.template = templateEntity;
//         FreemakerExecuter.cfg = SpringContextHolder.getBean(Configuration.class);
//         if (templateEntity.getJava() != null) {
//             templateEntity.getJava().forEach(FreemakerExecuter::executeJava);
//         }
//         if (templateEntity.getVue() != null) {
//             templateEntity.getVue().forEach(FreemakerExecuter::executeVue);
//         }
// //        template.getVue().forEach(FreemakerExecuter::executeVue);
//
//     }
//
//     private static void executeVue(VueTplEntity vueTpl) {
//         if (!vueTpl.getEnable()) return;
//
//         String loopTemplateOutputPath = templateOutputPath + "vueTpl/" + vueTpl.getContainer().getImageName() + "/";
//         if (!new File(loopTemplateOutputPath).mkdirs()) {
//             throw new RuntimeException(String.format("创建文件夹(%s)失败！", loopTemplateOutputPath));
//         }
//
//         // nginx.conf
//         InputStream srcFileNginx = FreemakerExecuter.class.getResourceAsStream("/templates/nginx.conf");
//         InputStream srcFileDockerfile = FreemakerExecuter.class.getResourceAsStream("/templates/Dockerfile.nginx.ftl");
//         FileOutputStream destFileNginx = null;
//         FileOutputStream destFileDockerfile = null;
//         try {
//             destFileNginx = new FileOutputStream(loopTemplateOutputPath + "nginx.conf");
//         } catch (FileNotFoundException e) {
//             e.printStackTrace();
//         }
//         IoUtil.copy(srcFileNginx, destFileNginx);
//         // Dockerfile
//         HashMap<String, Object> dockerfileMapper = new HashMap<>();
//         putSomethingIntoMapper(dockerfileMapper,
//                 "mode", vueTpl.getMode() == null ? "" : vueTpl.getMode(),
//                 "profile", "build:prod");
// //        dockerfileMapper.put("mode", vueTpl.getMode() == null ? "" : vueTpl.getMode());
// //        dockerfileMapper.put("profile", "build:prod");
//         generateFile(loopTemplateOutputPath + "Dockerfile",
//                 "Dockerfile.nginx.ftl", dockerfileMapper);
//
//         // JenkinsFile
//         // 根据cluster生成对应的参数
//         String kubeConfig = "";
//         String allImageName = "";
//         String allImageNameBuild = "registry.cn-beijing.aliyuncs.com/softwise/";
//         switch (vueTpl.getK8s().getCluster()) {
//             case ConstantUtil.aliyunCluster:
//                 kubeConfig = ConstantUtil.aliyunKubeConfig;
//                 allImageName = "registry-vpc.cn-beijing.aliyuncs.com/softwise/";
//                 break;
//             case ConstantUtil.internalCluster:
//                 kubeConfig = ConstantUtil.internalKubeConfig;
//                 allImageName = "registry.cn-beijing.aliyuncs.com/softwise/";
//                 break;
//             case ConstantUtil.gonghuiCluster:
//                 kubeConfig = ConstantUtil.gonghuiKubeConfig;
//                 allImageName = "registry.cn-beijing.aliyuncs.com/softwise/";
//                 break;
//             case ConstantUtil.nteppCluster:
//                 kubeConfig = ConstantUtil.nteppKubeConfig;
//                 allImageName = "registry.cn-beijing.aliyuncs.com/softwise/";
//                 break;
//             default:
//                 log.error("输入的Cluster有误。（输入为{})", vueTpl.getK8s().getCluster());
//                 System.exit(1);
//         }
//
//         // 生产环境的JenkinsFile
//         Map<String, Object> jenkinsfileMapper = new HashMap<>();
//         putSomethingIntoMapper(jenkinsfileMapper,
//                 "profile", "build:prod",
//                 "imageName", vueTpl.getContainer().getImageName()
//         );
// //        jenkinsfileMapper.put("profile", "build:prod");
// //        jenkinsfileMapper.put("imageName", vueTpl.getContainer().getImageName());
//         String extraTagStr = StrUtil.join("-", vueTpl.getContainer().getExtraTag().getTagName()) + "-";
//         if (vueTpl.getContainer().getExtraTag().getEnable()) {
//             jenkinsfileMapper.put("extraTag", extraTagStr);
//         } else {
//             jenkinsfileMapper.put("extraTag", "\"\"");
//         }
// //        if (!Arrays.asList(ConstantUtil.clusterList).contains(vueTpl.getK8s().getCluster())) {
// //            log.error("输入的集群({})错误。", vueTpl.getK8s().getCluster());
// //            System.exit(1);
// //        }
//         jenkinsfileMapper.put("cluster", vueTpl.getK8s().getCluster());
// //        if (vueTpl.getK8s().getCluster().equals("aliyun")) {
// //            jenkinsfileMapper.put("cluster", "aliyun");
// //        } else {
// //            jenkinsfileMapper.put("cluster", "gonghui");
// //        }
//         putSomethingIntoMapper(jenkinsfileMapper,
//                 "env", "prod",
//                 "yamlFile", vueTpl.getK8s().getDeployName() + "-deploy.yaml",
//                 "namespace", vueTpl.getK8s().getNamespace(),
//                 "deploymentName", vueTpl.getK8s().getDeployName(),
//                 "msg", vueTpl.getDingMsg(),
//                 "mode", vueTpl.getMode() == null ? "" : vueTpl.getMode(),
//                 "kubeconfig", kubeConfig,
//                 "allImageName", allImageName + vueTpl.getContainer().getImageName(),
//                 "allImageNameBuild", allImageNameBuild + vueTpl.getContainer().getImageName(),
//                 "k8sYamlDir", changeYamlDir(vueTpl.getK8s().getK8sYamlDir()),
//                 "repoCredential", "acr-repo",
//                 "dockerRepoAddress", "registry.cn-beijing.aliyuncs.com/softwise/",
//                 "imageName", "registry.cn-beijing.aliyuncs.com/softwise/" + vueTpl.getContainer().getImageName(),
//                 "imageTag", ""
//         );
//
//         generateFile(loopTemplateOutputPath + "Jenkinsfile",
//                 "Jenkinsfile.vue.v2.ftl", jenkinsfileMapper);
//
//         // 测试环境的Jenkinsfile
//         jenkinsfileMapper.put("kubeconfig", ConstantUtil.internalKubeConfig);
//         jenkinsfileMapper.put("allImageName", allImageNameBuild + vueTpl.getContainer().getImageName());
//         if (vueTpl.getContainer().getExtraTag().getEnable()) {
//             jenkinsfileMapper.put("extraTag", extraTagStr + "test-");
//         } else {
//             jenkinsfileMapper.put("extraTag", "test-");
//         }
//         String testYamlDir = changeYamlDir(vueTpl.getK8s().getK8sYamlDir()).replace("prod", "test");
//         putSomethingIntoMapper(jenkinsfileMapper,
//                 "env", "test",
//                 "cluster", "internal",
//                 "k8sYamlDir", testYamlDir
//         );
// //        jenkinsfileMapper.put("env", "test");
// //        jenkinsfileMapper.put("cluster", "internal");
//         generateFile(loopTemplateOutputPath + "Jenkinsfile-test",
//                 "Jenkinsfile.vue.v2.ftl", jenkinsfileMapper);
//
//
// //        Map<String, Object> optProperties = new HashMap<>();
// //        optProperties.put("description", vueTpl.getDingMsg());
//         // k8s相关文件
//         String k8sFileOutputPath = loopTemplateOutputPath + "kube-yaml" + "/";
//         String prodFilePath = k8sFileOutputPath + "prod/";
//         String testFilePath = k8sFileOutputPath + "test/";
//
//         Map<String, Object> kubeYamlMapper = new HashMap<>();
//         putSomethingIntoMapper(kubeYamlMapper,
//                 "deployName", vueTpl.getK8s().getDeployName(),
//                 "kubesphereDescription", vueTpl.getDingMsg(),
//                 "namespace", vueTpl.getK8s().getNamespace(),
//                 "ingressName", vueTpl.getK8s().getDeployName(),
//                 "svcName", vueTpl.getK8s().getDeployName()
//         );
// //        kubeYamlMapper.put("deployName", vueTpl.getK8s().getDeployName());
// //        kubeYamlMapper.put("kubesphereDescription", vueTpl.getDingMsg());
// //        kubeYamlMapper.put("namespace", vueTpl.getK8s().getNamespace());
// //        kubeYamlMapper.put("ingressName", vueTpl.getK8s().getDeployName());
// //        kubeYamlMapper.put("svcName", vueTpl.getK8s().getDeployName());
//
//         // 正式环境的domain和ingressPath
//         // 需要生成Ingress文件
//         if (vueTpl.getK8s().getIngress().getEnable()) {
//             kubeYamlMapper.put("domain", vueTpl.getK8s().getIngress().getDomainProd());
//             if (vueTpl.getK8s().getIngress().getPrefixProd().equals("/")) {
//                 putSomethingIntoMapper(kubeYamlMapper,
//                         "path", vueTpl.getK8s().getIngress().getPrefixProd(),
//                         "nginxRewrite", ""
//                 );
// //                kubeYamlMapper.put("path", vueTpl.getK8s().getIngress().getPrefixProd());
// //                kubeYamlMapper.put("nginxRewrite", "");
//             } else {
//                 putSomethingIntoMapper(kubeYamlMapper,
//                         "path", vueTpl.getK8s().getIngress().getPrefixProd() + "(/|$)(.*)",
//                         "nginxRewrite", "nginx.ingress.kubernetes.io/rewrite-target: /$2"
//                 );
// //                kubeYamlMapper.put("path", vueTpl.getK8s().getIngress().getPrefixProd() + "(/|$)(.*)");
// //                kubeYamlMapper.put("nginxRewrite", "nginx.ingress.kubernetes.io/rewrite-target: /$2");
//             }
//             // ingress文件
//             generateFile(prodFilePath + vueTpl.getK8s().getDeployName() + "-ingress.yaml",
//                     "ingress.vue.ftl", kubeYamlMapper);
//         }
//         // deployment文件
//         generateFile(prodFilePath + vueTpl.getK8s().getDeployName() + "-deploy.yaml",
//                 "deployment.vue.ftl", kubeYamlMapper);
//         // svc文件
//         generateFile(prodFilePath + vueTpl.getK8s().getDeployName() + "-svc.yaml",
//                 "svc.vue.ftl", kubeYamlMapper);
//
//         // test文件
//         // 测试环境的domain和ingressPath
//         if (vueTpl.getK8s().getIngress().getEnable()) {
//             kubeYamlMapper.put("domain", vueTpl.getK8s().getIngress().getDomainTest());
//             if (vueTpl.getK8s().getIngress().getPrefixTest().equals("/")) {
//                 kubeYamlMapper.put("path", vueTpl.getK8s().getIngress().getPrefixTest());
//                 kubeYamlMapper.put("nginxRewrite", "");
//             } else {
//                 kubeYamlMapper.put("path", vueTpl.getK8s().getIngress().getPrefixTest() + "(/|$)(.*)");
//                 kubeYamlMapper.put("nginxRewrite", "nginx.ingress.kubernetes.io/rewrite-target: /$2");
//             }
//             generateFile(testFilePath + vueTpl.getK8s().getDeployName() + "-ingress.yaml",
//                     "ingress.vue.ftl", kubeYamlMapper);
//         }
//         // deployment文件
//         generateFile(testFilePath + vueTpl.getK8s().getDeployName() + "-deploy.yaml",
//                 "deployment.vue.ftl", kubeYamlMapper);
//         // svc文件
//         generateFile(testFilePath + vueTpl.getK8s().getDeployName() + "-svc.yaml",
//                 "svc.vue.ftl", kubeYamlMapper);
//     }
//
//     private static void executeJava(JavaTplEntity javaTpl) {
//         if (!javaTpl.getEnable()) return;
//
//         String loopTemplateOutputPath = templateOutputPath + "javaTpl/" + javaTpl.getContainer().getImageName() + "/";
//         // Docker相关
//         // Dockerfile
//         Map<String, Object> dockerfileMapper = new HashMap<>();
//         dockerfileMapper.put("jarName", "target/" + javaTpl.getContainer().getJarName());
//         dockerfileMapper.put("moduleName", javaTpl.getMaven().getModuleName());
//         dockerfileMapper.put("mode", javaTpl.getMode() == null ? "" : javaTpl.getMode());
//         if (ConstantUtil.multiMode.equals(javaTpl.getMode())) {
//             generateFile(loopTemplateOutputPath + "/" + "Dockerfile",
//                     "Dockerfile.java.ftl", dockerfileMapper);
//         } else {
//             generateFile(loopTemplateOutputPath + javaTpl.getMaven().getModuleName() + "/" + "Dockerfile",
//                     "Dockerfile.java.ftl", dockerfileMapper);
//         }
//         // run.sh.ftl
//         Map<String, Object> runShMapper = new HashMap<>();
//         runShMapper.put("jarName", javaTpl.getContainer().getJarName());
//         generateFile(loopTemplateOutputPath + javaTpl.getMaven().getModuleName() + "/run.sh",
//                 "run.sh.ftl", runShMapper);
//
//         // JenkinsFile
//         // 根据cluster生成对应的参数
//         String kubeConfig = "";
//         String allImageName = "";
//         String allImageNameBuild = "registry.cn-beijing.aliyuncs.com/softwise/";
//         switch (javaTpl.getK8s().getCluster()) {
//             case ConstantUtil.aliyunCluster:
//                 kubeConfig = ConstantUtil.aliyunKubeConfig;
//                 allImageName = "registry-vpc.cn-beijing.aliyuncs.com/softwise/";
//                 break;
//             case ConstantUtil.internalCluster:
//                 kubeConfig = ConstantUtil.internalKubeConfig;
//                 allImageName = "registry.cn-beijing.aliyuncs.com/softwise/";
//                 break;
//             case ConstantUtil.gonghuiCluster:
//                 kubeConfig = ConstantUtil.gonghuiKubeConfig;
//                 allImageName = "registry.cn-beijing.aliyuncs.com/softwise/";
//                 break;
//             case ConstantUtil.nteppCluster:
//                 kubeConfig = ConstantUtil.nteppKubeConfig;
//                 allImageName = "registry.cn-beijing.aliyuncs.com/softwise/";
//                 break;
//             default:
//                 log.error("输入的Cluster有误。（输入为{})", javaTpl.getK8s().getCluster());
//                 System.exit(1);
//         }
//
//         // 生产环境的JenkinsFile
//         Map<String, Object> jenkinsFileMapper = new HashMap<>();
//         jenkinsFileMapper.put("sedScript", "");
//         jenkinsFileMapper.put("moduleName", javaTpl.getMaven().getModuleName());
//         jenkinsFileMapper.put("imageName", javaTpl.getContainer().getImageName());
//         String extraTagStr = StrUtil.join("-", javaTpl.getContainer().getExtraTag().getTagName()) + "-";
//         if (javaTpl.getContainer().getExtraTag().getEnable()) {
//             jenkinsFileMapper.put("extraTag", extraTagStr);
//         } else {
//             jenkinsFileMapper.put("extraTag", "\"\"");
//         }
//         jenkinsFileMapper.put("mode", javaTpl.getMode() == null ? "" : javaTpl.getMode());
//         if (ConstantUtil.multiMode.equals(javaTpl.getMode())) {
//             jenkinsFileMapper.put("workDir", "");
//         } else {
//             jenkinsFileMapper.put("workDir", javaTpl.getMaven().getModuleName());
//         }
// //        if (!Arrays.asList(ConstantUtil.clusterList).contains(javaTpl.getK8s().getCluster())) {
// //            log.error("输入的集群({})错误。", javaTpl.getK8s().getCluster());
// //            System.exit(1);
// //        }
//         jenkinsFileMapper.put("cluster", javaTpl.getK8s().getCluster());
// //        if (javaTpl.getK8s().getCluster().equals("aliyun")) {
// //            jenkinsFileMapper.put("cluster", "aliyun");
// //        } else {
// //            jenkinsFileMapper.put("cluster", "gonghui");
// //        }
//         jenkinsFileMapper.put("env", "prod" + "/" + javaTpl.getMaven().getModuleName());
//         jenkinsFileMapper.put("yamlFile", javaTpl.getK8s().getDeployName() + "-deploy.yaml");
//         jenkinsFileMapper.put("namespace", javaTpl.getK8s().getNamespace());
//         jenkinsFileMapper.put("deploymentName", javaTpl.getK8s().getDeployName());
//         jenkinsFileMapper.put("msg", javaTpl.getDingMsg());
//         jenkinsFileMapper.put("kubeconfig", kubeConfig);
//         jenkinsFileMapper.put("allImageName", allImageName + javaTpl.getContainer().getImageName());
//         jenkinsFileMapper.put("allImageNameBuild", allImageNameBuild + javaTpl.getContainer().getImageName());
//                 jenkinsFileMapper.put("k8sYamlDir", changeYamlDir(javaTpl.getK8s().getK8sYamlDir()));
//         generateFile(loopTemplateOutputPath + "Jenkinsfile-" + javaTpl.getMaven().getModuleName(),
//                 "Jenkinsfile.java.v2.ftl", jenkinsFileMapper);
//         // 测试环境的JenkinsFile
//         jenkinsFileMapper.put("kubeconfig", ConstantUtil.internalKubeConfig);
//         if (javaTpl.getContainer().getExtraTag().getEnable()) {
//             jenkinsFileMapper.put("extraTag", extraTagStr + "test-");
//         } else {
//             jenkinsFileMapper.put("extraTag", "test-");
//         }
//         jenkinsFileMapper.put("sedScript", "sh 'sed -i \\'s/active: prod/active: test/\\' "
//                 + javaTpl.getMaven().getModuleName() + "/src/main/resources/bootstrap.yml'");
//         jenkinsFileMapper.put("env", "test" + "/" + javaTpl.getMaven().getModuleName());
//         jenkinsFileMapper.put("cluster", "internal");
//         String testYamlDir = changeYamlDir(javaTpl.getK8s().getK8sYamlDir()).replace("prod", "test");
//         jenkinsFileMapper.put("k8sYamlDir", testYamlDir);
//         jenkinsFileMapper.put("allImageName", allImageNameBuild + javaTpl.getContainer().getImageName());
//         generateFile(loopTemplateOutputPath + "Jenkinsfile-" + javaTpl.getMaven().getModuleName() + "-test",
//                 "Jenkinsfile.java.v2.ftl", jenkinsFileMapper);
//
//         // k8s相关文件
//         String k8sFileOutputPath = loopTemplateOutputPath + "kube-yaml" + "/";
//         String prodFilePath = k8sFileOutputPath + "prod/" + javaTpl.getMaven().getModuleName() + "/";
//         String testFilePath = k8sFileOutputPath + "test/" + javaTpl.getMaven().getModuleName() + "/";
//
//         Map<String, Object> kubeYamlMapper = new HashMap<>();
//         kubeYamlMapper.put("deployName", javaTpl.getK8s().getDeployName());
//         kubeYamlMapper.put("kubesphereDescription", javaTpl.getDingMsg());
//         kubeYamlMapper.put("namespace", javaTpl.getK8s().getNamespace());
//         kubeYamlMapper.put("ingressName", javaTpl.getK8s().getDeployName());
//         kubeYamlMapper.put("svcName", "common-gateway");
//
//         // 正式环境的domain和ingressPath
//         // 需要生成Ingress文件
//         if (javaTpl.getK8s().getIngress().getEnable()) {
//             kubeYamlMapper.put("domain", javaTpl.getK8s().getIngress().getDomainProd());
//             if (javaTpl.getK8s().getIngress().getPrefixProd().equals("/")) {
//                 kubeYamlMapper.put("path", javaTpl.getK8s().getIngress().getPrefixProd());
//                 kubeYamlMapper.put("nginxRewrite", "");
//             } else {
//                 kubeYamlMapper.put("path", javaTpl.getK8s().getIngress().getPrefixProd() + "(/|$)(.*)");
//                 kubeYamlMapper.put("nginxRewrite", "nginx.ingress.kubernetes.io/rewrite-target: /$2");
//             }
//             // ingress文件
//             generateFile(prodFilePath + javaTpl.getK8s().getDeployName() + "-ingress.yaml",
//                     "ingress.java.ftl", kubeYamlMapper);
//         }
//         // deployment文件
//         generateFile(prodFilePath + javaTpl.getK8s().getDeployName() + "-deploy.yaml",
//                 "deployment.java.ftl", kubeYamlMapper);
//
//         // test文件
//         // 测试环境的domain和ingressPath
//         if (javaTpl.getK8s().getIngress().getEnable()) {
//             kubeYamlMapper.put("domain", javaTpl.getK8s().getIngress().getDomainTest());
//             if (javaTpl.getK8s().getIngress().getPrefixTest().equals("/")) {
//                 kubeYamlMapper.put("path", javaTpl.getK8s().getIngress().getPrefixTest());
//                 kubeYamlMapper.put("nginxRewrite", "");
//             } else {
//                 kubeYamlMapper.put("path", javaTpl.getK8s().getIngress().getPrefixTest() + "(/|$)(.*)");
//                 kubeYamlMapper.put("nginxRewrite", "nginx.ingress.kubernetes.io/rewrite-target: /$2");
//             }
//             generateFile(testFilePath + javaTpl.getK8s().getDeployName() + "-ingress.yaml",
//                     "ingress.java.ftl", kubeYamlMapper);
//         }
//         // deployment文件
//         generateFile(testFilePath + javaTpl.getK8s().getDeployName() + "-deploy.yaml",
//                 "deployment.java.ftl", kubeYamlMapper);
//
//         // bootstrap.yml文件
//         Map<String, Object> bootStrapMapper = new HashMap<>();
//         putSomethingIntoMapper(bootStrapMapper,
//                 "appName", javaTpl.getMaven().getAppName(),
//                 "profileName", "prod",
//                 "nacosAddr", javaTpl.getMaven().getProd().get("nacosAddr"),
//                 "nacosNamespace", javaTpl.getMaven().getProd().get("nacosNamespace")
//         );
//         generateFile(loopTemplateOutputPath + javaTpl.getMaven().getModuleName() + "/src/main/resources/bootstrap-prod.yml",
//                 "bootstrap.yml.ftl", bootStrapMapper);
//         putSomethingIntoMapper(bootStrapMapper, "profileName", "test");
//         generateFile(loopTemplateOutputPath + javaTpl.getMaven().getModuleName() + "/src/main/resources/bootstrap-test.yml",
//                 "bootstrap.yml.ftl", bootStrapMapper);
//     }
//
//
//
//     private static void generateFile(String filePath, String tempName, Map<String, Object> params) {
//         // 创建文件夹
//         boolean mkdirs = new File(filePath.substring(0, filePath.lastIndexOf("/"))).mkdirs();
// //        if (!mkdirs) {
// //            throw new RuntimeException(String.format("创建文件失(%s)失败！", filePath.substring(0, filePath.lastIndexOf("/"))));
// //        }
//         Writer out = null;
//         try {
//             Template template = cfg.getTemplate(tempName);
//             out = new FileWriter(filePath);
//             template.process(params, out);
//
//         } catch (IOException | TemplateException e) {
//             e.printStackTrace();
//         } finally {
//             if (out != null) {
//                 try {
//                     out.flush();
//                     out.close();
//                 } catch (IOException e) {
//                     e.printStackTrace();
//                 }
//             }
//         }
//
//     }
//
//     private static String changeYamlDir(String path) {
//         if (StrUtil.isBlank(path)) return path;
//         if (path.startsWith("./")) {
//             return path.replace("./", "/");
//         } else if (!path.startsWith("/")) {
//             return "/" + path;
//         }
//         return path;
//     }
//
//     private static void putSomethingIntoMapper(Map<String, Object> mapper, String... args) {
//         for (int i = 0; i < args.length; i++) {
//             mapper.put(args[i], args[++i]);
//         }
//     }
// }
